package aphorism;

import java.awt.Font;
import java.awt.event.ActionEvent;
import java.util.ArrayList;

/**
 * Kümmert sich um die Liste der Schriftstile.
 *
 * @author Patrick Bauer
 * @version 1.0
 */
public class FontStyleSelect extends AbstractSelect {
    private ArrayList<FontStyleItem> fontStyleList;

    /**
     * Befuellt die fontStyleList mit Elementen, fuegt diese dann der Combobox hinzu
     * <br>
     * und setzt den ActionListener auf die eigene Instanz.
     */
    public FontStyleSelect() {
        this.fontStyleList = new ArrayList<FontStyleItem>();

        this.fontStyleList.add(new FontStyleItem("plain", Font.PLAIN));
        this.fontStyleList.add(new FontStyleItem("kursiv", Font.ITALIC));
        this.fontStyleList.add(new FontStyleItem("bold", Font.BOLD));
        this.fontStyleList.add(new FontStyleItem("kursiv + bold", Font.ITALIC | Font.BOLD));
        
        for(FontStyleItem item: this.fontStyleList) {
            this.addItem(item);
        }
        
        this.addActionListener(this);
    }

    /**
     * Setzt beim aendern der Combobox den gewählten Stil als Schriftstil des StringPanels.
     *
     * @param e uebergebenes Event der Combobox
     */
    @Override
    public void actionPerformed(ActionEvent e) {
        FontStyleSelect box = (FontStyleSelect) e.getSource();
        FontStyleItem style = (FontStyleItem) box.getSelectedItem();
        
        if(this.getStringPanel() != null){
            this.getStringPanel().setFontStyle(style.getBitmask());
            this.getStringPanel().repaint();
        }
    }
    
}
